import axios from 'axios'

// 创建带有特定前缀的axios实例
const service = axios.create({
  baseURL: 'https://m1.apifoxmock.com/m1/6574585-6279612-default',
  timeout: 10000
})

/**
 * 分类获取接口
 * 获取任务分类树形结构数据
 * @returns {Promise} 包含分类树形结构数据的Promise对象
 */
export function getMenuTree() {
  return service({
    url: '/api/getTree',
    method: 'get'
  }).then(response => {
    return response.data.data
  })
}

/**
 * 任务分页查询接口
 * 获取任务分页列表数据，支持分页和条件查询
 * @param {Object} params - 查询参数
 * @param {boolean} params.countTotal - 是否统计总数
 * @param {number} params.pageNo - 页码
 * @param {number} params.pageSize - 每页条数
 * @param {string} params.keyword - 关键字搜索（可选）
 * @param {string} params.menuId - 分类 ID，从树接口获取
 * @returns {Promise} 包含任务列表和分页信息的Promise对象
 */
export function getTaskPage(params) {
  return service({
    url: '/api/qryPage',
    method: 'post',
    data: params
  }).then(response => {
    return response.data.data
  })
}

/**
 * 删除任务接口
 * 根据任务ID删除任务
 * @param {number} id - 任务ID
 * @returns {Promise} 包含删除结果的Promise对象
 */
export function deleteTask(id) {
  return service({
    url: '/api/deleteById',
    method: 'post',
    data: { id }
  }).then(response => {
    return response.data.data
  })
}

/**
 * 启用/停用任务接口
 * 根据任务ID更新任务状态
 * @param {Object} params - 状态更新参数
 * @param {number} params.id - 任务ID
 * @param {number} params.status - 更改的状态：0：停用 1：启用
 * @returns {Promise} 包含状态更新结果的Promise对象
 */
export function updateTaskStatus(params) {
  return service({
    url: '/api/status',
    method: 'post',
    data: params
  }).then(response => {
    return response.data.data
  })
}

/**
 * 新增任务接口
 * 新增任务信息
 * @param {Object} params - 任务信息参数
 * @param {string} params.taskName - 任务名称
 * @param {number} params.taskType - 任务分类类型
 * @param {string} params.taskCron - 任务周期
 * @param {number} params.status - 任务状态：0：停用 1：启用
 * @returns {Promise} 包含新增结果的Promise对象
 */
export function addTask(params) {
  return service({
    url: '/api/addTask',
    method: 'post',
    data: params
  }).then(response => {
    return response.data.data
  })
}

/**
 * 字段说明:
 * 
 * getMenuTree 返回数据字段说明:
 * id: 分类ID
 * menuName: 分类名称
 * menuCode: 分类Code
 * status: 分类状态
 * menuDesc: 分类描述
 * children: 子分类数据
 * 
 * getTaskPage 返回数据字段说明:
 * id: 任务ID
 * taskName: 任务名称
 * taskType: 任务类型
 * taskCron: 任务周期
 * status: 任务状态
 * operator: 操作人
 * updateTime: 最后更新时间
 * 
 * 分页信息字段说明:
 * total: 总记录数
 * size: 每页条数
 * current: 当前页码
 * pages: 总页数
 * list: 任务数据列表
 */